package collection;

import java.util.ArrayList;
import java.util.List;

public class SubListDemo {
    public static void main(String[] args) {
        /*
        List提供了获取子集的操作：
           List subList(int start,int end):含头不含尾
         */
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i * 10);
        }
        System.out.println(list);

        List<Integer> sublist = list.subList(3, 8);
        System.out.println("sublist:" + sublist);//[30,40,50,60,70]

        //将子集每个元素都扩大10倍
        for (int i = 0; i < sublist.size(); i++) {
            sublist.set(i, sublist.get(i) * 10);
        }
        System.out.println("sublist:" + sublist);//[300,400,500,600,700]
        //注意：对子集的操作就是对原集合对应的元素操作
        System.out.println("list:" + list);//[0,10,20,300,400,500,600,700,80,90]

        list.set(3,1000);//将原集合下标为3的元素修改为1000
        System.out.println("list:"+list);//[0,10,20,1000,400,500,600,700,80,90]
        //原集合数据改变后，子集数据跟着变了
        System.out.println("sublist:"+sublist);//[1000,400,500,600,700]

        list.remove(0);
        System.out.println("list:"+list);//[10,20,1000,400,500,600,700,80,90]
        //原集合长度修改之后，子集将不能再进行任何操作，操作在则发生异常，但是可以重新获取子集
        System.out.println("sublist:"+sublist);
    }
}